package org.abc.fund.entity.strategy;

import jakarta.persistence.*;
import java.math.BigDecimal;
import java.time.LocalDate;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 回测类，用于表示策略的历史回测信息
 * <p>包含回测的基本信息，如回测策略、时间范围、初始余额，以及回测结果
 */
@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Backtest {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;

  /** 回测的目标策略 */
  @ManyToOne
  @JoinColumn(name = "strategy_id")
  private CombinationStrategy strategy;

  /** 回测历史开始日期 */
  private LocalDate startDate;

  /** 回测历史结束日期 */
  private LocalDate endDate;

  /** 回测初始余额 */
  private BigDecimal initialBalance;

  /** 回测结果, JSON 格式 */
  @Lob private String result;
}
